package com.leetcode.midium;

/**
 * @author zfl
 * @Classname Convert
 * @Description Z字形变换
 * @Date 2020/10/11 16:28
 */
public class Convert {
    /**
     * @param s
     * @param numRows
     * @return
     * 执行用时：3 ms, 在所有 Java 提交中击败了98.97%的用户
     * 内存消耗：39.1 MB, 在所有 Java 提交中击败了81.36%的用户
     */
    public static String convert1(String s, int numRows) {
        if(s.length() <= numRows || numRows == 1) {
            return s;
        }
        StringBuilder str = new StringBuilder();
        int m = 2 * (numRows - 1);
        for (int i = 0; i < numRows; i++) {
            int j = 0;
            if(i == 0 || i == numRows - 1) {
                while ((j + i)< s.length()) {
                    str.append(s.charAt(j + i));
                    j += m;
                }
            }else {
                while (j < s.length()) {
                    if(j + i < s.length()) {
                        str.append(s.charAt(j + i));
                    }
                    if(j + m - i < s.length()) {
                        str.append(s.charAt(j + m - i));
                    }
                    j += m;
                }
            }
        }
        return str.toString();
    }
}
